Over the last ten years, computers and computing technology have grown in leaps and bounds due, in no small part, to the growth and reach of the Internet. Computer applications, once written in procedural programming languages and mostly self-contained on each computer desktop, now are increasingly being written to include non-procedural programming languages with regular interaction across a data network, such as the Internet, for retrieving, not only data, but application logic as well.
Procedural languages, such as C/C++, FORTRAN, MICROSOFT CORPORATION'S VISUAL BASIC™, and the like, implement application functionality through properly ordered steps and actions. In contrast, non-procedural languages, such as Hypertext Markup Language (HTML), MACROMEDIA, INC.'s MXML™, which is a specialized, XML-based language for developing RIAs in MACROMEDIA, INC.'s FLEX™ development environment, and the like, define the final appearance of an application's user interface without specifying a time-based sequence of steps for constructing that interface. These non-procedural languages, also known as declarative languages, are extensively used in Internet technology. Web pages are defined by the underlying HTML. When a browser requests a Web page, the entire page is defined. In typical RIA, procedural languages may be used to define the programming logic, while the non-procedural languages are used to define the visual interface elements.
RIAs are one area in which the growth of declarative applications has coupled with a growth in Internet or network interaction. RIAs combine the usability of a desktop application with the administrative advantages of the Internet. Formerly, the client-server framework powered many Internet related applications. In the client-server paradigm, the client computer acts mostly as a display unit. The majority of processing occurs remotely on the server, while the results are displayed on the client. While this functionality extends the powerful processing of large centralized servers to individual users, network latency leads to delays in the operation of client-server applications. Even with the large increases in available high speed bandwidth, network latency still exists.
RIAs, however, provide for much of the processing to be completed on the client computer. The RIAs are stored remotely on Internet-accessible servers. When the client requests access, the computer logic defining the RIA, or at least large portions thereof, is downloaded and run completely on the client computer. Desktop and handheld computers have become faster and more powerful, and with large amounts of storage space. Therefore, complex data and rich graphics may be processed and rendered quickly. Moreover, because of the prevalence and speed of today's Internet access, these RIAs may be continually updated with data in order to provide a rich graphical and informational experience in a real-time world.
Because RIAs typically rely on rich graphical presentation, graphically oriented containers are generally used on each client to run the rich application. For example, interactive information and graphical players, such as MACROMEDIA INC.'s MACROMEDIA FLASH™ PLAYER, SUN MICROSYSTEMS' JAVA™ VIRTUAL MACHINE™ (JVM™), and the like, are used to execute RIAs on the client. These interactive, information and graphical players typically run monolithic files, such as Small Web File (SWF) format for MACROMEDIA FLASH™ PLAYER and JAVA™ applets for the JVM™. SWF files and JAVA™ applets generally consist of bytecode that runs on the virtual machine of the player. The use of virtual machines increases the cross-platform compatibility of such applications. Software manufacturers, such as MACROMEDIA, INC., SUN MICROSYSTEMS, INC., MICROSOFT CORPORATION, and the like, create different virtual machines to play on various different computer platforms. However, the bytecode format remains constant and compatible with its designed player, while the player is customized to the particular computer platform.
When a user selects to access a RIA, the underlying bytecode is downloaded to the user's computer for execution on the graphical player. Merely downloading the bytecode file to the user's computer takes relatively little time, at least over a broadband Internet connection. Once there, each piece of bytecode directs the multimedia player to perform some single step or single function of the application, such as creating objects that may then be rendered onto the display by the players. While the execution of a few steps also does not typically take much time, the execution of all of the bytecode to instantiate and render each of the graphical interface elements in addition to the download time creates a substantial delay in the user's experience of the RIA. Once this process has completed, interaction with the RIA is extremely fast. However, the initial start-up delay may be long enough to cause many users to quit the RIA before even being able to access it. Thus, the current solutions for delivering high quality RIAs based on declarative languages provide a less than desirable experience for the user at start up.